"""实现一个基于 JSON 格式的信息管理程序。该程序需支持以下菜单功能：
1)添加记录：2)删除记录；3)查找记录;  4)退出 
"""

import json
import os

# 数据文件路径
DATA_FILE = 'data.json'

# 初始化数据文件
def init_data():
    if not os.path.exists(DATA_FILE):
        with open(DATA_FILE, 'w', encoding='utf-8') as f:
            json.dump([], f)#空数组

# 加载数据
def load_data():
    with open(DATA_FILE, 'r', encoding='utf-8') as f:
        return json.load(f)

# 保存数据
def save_data(data):
    with open(DATA_FILE, 'w', encoding='utf-8') as f:
        json.dump(data, f, ensure_ascii=False, indent=4)
        """- 当 ensure_ascii=True （默认值）时，所有非ASCII字符（如中文）会被转
        义为Unicode转义序列 。例如： "中文" 会被保存为 "\u4e2d\u6587"""

# 添加记录
def add_record():
    data = load_data()
    record = {
        'id': len(data) + 1,
        'name': input('请输入姓名: '),
        'age': input('请输入年龄: '),
        'phone': input('请输入电话: ')
    }
    data.append(record)
    save_data(data)
    print('添加成功!')

# 删除记录
def delete_record():
    data = load_data()
    record_id = int(input('请输入要删除的记录ID: '))
    """# 生成器表达式（惰性求值）(r for r in data if r['id'] != record_id)  # 返回生成器对象
    # 集合推导式（去重）{r for r in data if r['id'] != record_id}  # 返回集合"""
    data = [r for r in data if r['id'] != record_id]
    """new_data = []
    for r in data:
        if r['id'] != record_id:
            new_data.append(r)
    data = new_data"""
    save_data(data)
    print('删除成功!')

# 查找记录
def find_record():
    data = load_data()
    keyword = input('请输入查找关键字(姓名/电话): ')
    results = [r for r in data if keyword in r['name'] or keyword in r['phone']]
    
    if results:
        print('查找结果:')
        for r in results:
            print(f"ID: {r['id']}, 姓名: {r['name']}, 年龄: {r['age']}, 电话: {r['phone']}")
    else:
        print('未找到匹配记录')

# 主菜单

def main():
    init_data()
    while True:
        print('\n=== 信息管理系统 ===')
        print('1) 添加记录')
        print('2) 删除记录')
        print('3) 查找记录')
        print('4) 退出')
        
        choice = input('请选择操作(1-4): ')
        
        if choice == '1':
            add_record()
        elif choice == '2':
            delete_record()
        elif choice == '3':
            find_record()
        elif choice == '4':
            print('谢谢使用，再见!')
            break
        else:
            print('输入错误，请重新选择!')

if __name__ == '__main__':
    main()